/*
 * Copyright (c) 2006 - 2022, webrx.cn All rights reserved.
 *
 */
package cn.webrx;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * <p>Project: app2022 - Exam10
 * <p>Powered by webrx On 2022-01-20 14:40:09
 *
 * @author webrx [webrx@126.com]
 * @version 1.0
 * @since 17
 */
public class Exam10 {
    public static void main(String[] args) {
        //复制目录
        //copyDir("c:\\aa", "c:\\abc5");

        //移动（剪切，粘贴，更名）
        move("c:\\aa", "d:\\aa4");
    }

    /**
     * Description: 移动目录
     *
     * @date: 2022/1/20 15:02
     * @params: [java.io.File, java.io.File]
     * @return: void
     */
    public static void move(File sdir, File ddir) {
        copyDir(sdir, ddir);
        delDir(sdir);
    }

    /**
     * Description: 移动目录
     *
     * @date: 2022/1/20 15:03
     * @params: [java.lang.String]
     * @return: void
     */
    public static void delDir(String dir) {
        delDir(new File(dir));
    }

    /**
     * Description:
     *
     * @date: 2022/1/20 15:03
     * @params: [java.io.File]
     * @return: void
     */
    public static void delDir(File dir) {
        File[] fs = dir.listFiles();
        if (fs.length == 0) {
            dir.delete(); //删除空目录
        } else {
            for (File f : fs) {
                if (f.isDirectory()) {
                    delDir(f);//再次递归调用，删除目录
                } else if (f.isFile()) {
                    f.delete();//删除文件
                }
            }
        }
        dir.delete();
    }

    /**
     * Description:
     *
     * @date: 2022/1/20 15:03
     * @params: [java.lang.String, java.lang.String]
     * @return: void
     */
    public static void move(String sdir, String ddir) {
        move(new File(sdir), new File(ddir));
    }

    public static void copyDir(File sdir, File ddir) {
        if (!ddir.exists()) {
            ddir.mkdirs();
        }
        for (File t : sdir.listFiles()) {
            if (t.isDirectory()) {
                copyDir(t, new File(ddir.getPath(), t.getName()));
            } else {
                try {
                    Files.copy(t.toPath(), Paths.get(ddir.getPath() + "/" + t.getName()));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void copyDir(String sdir, String ddir) {
        copyDir(new File(sdir), new File(ddir));
    }
}
